using System;
using System.Collections.Generic;
using Kiwi.Container.DependencyInjection;

namespace Kiwi.Container
{
    public interface IComponentResolver
    {
        bool HasComponent(Type type);
        object TryResolve(Type type, Func<IComponentRegistration, bool> filter);
        object Resolve(Type type, Func<IComponentRegistration, bool> filter);
        IEnumerable<object> ResolveAll(Type type, Func<IComponentRegistration, bool> filter);
        void Inject(object instance, IEnumerateDependentProperties dependentProperties);
        object Construct(Type type, IEnumerateDependentProperties dependentProperties);
    }
}